home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 April / CMCD0404.ISO / Software / Shareware / Programare / sharp / wwwSharp_setup.exe / {app} / Examples / Control / Assembly / simplecontrol.cs < prev    next >
Text File  |  2003-12-03  |  5KB  |  160 lines

  1. //-----------------------------------------------------------------------
  2. //  This file is part of the Microsoft .NET SDK Code Samples.
  3. // 
  4. //  Copyright (C) Microsoft Corporation.  All rights reserved.
  5. // 
  6. //This source code is intended only as a supplement to Microsoft
  7. //Development Tools and/or on-line documentation.  See these other
  8. //materials for detailed information regarding Microsoft code samples.
  9. // 
  10. //THIS CODE AND INFORMATION ARE PROVIDED AS IS WITHOUT WARRANTY OF ANY
  11. //KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
  12. //IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
  13. //PARTICULAR PURPOSE.
  14. //-----------------------------------------------------------------------
  15.  
  16.  
  17. namespace Microsoft.Samples.WinForms.Cs.SimpleControl {
  18.     using System;
  19.     using System.ComponentModel;
  20.     using System.Windows.Forms;
  21.     using System.Drawing;
  22.  
  23.     [
  24.     DefaultProperty("DrawingMode"),
  25.     DefaultEvent("DrawingModeChanged"),
  26.     ]
  27.     public class SimpleControl : System.Windows.Forms.Control {
  28.  
  29.         private DrawingMode drawingMode ;
  30.         private System.EventHandler onDrawingModeChanged;
  31.  
  32.         //*** Constructors
  33.  
  34.         public SimpleControl() :base() {
  35.  
  36.             //Initialise drawingMode
  37.             drawingMode = DrawingMode.Happy;
  38.  
  39.             //Initialise BackColor and ForeColor based on DrawingMode
  40.             SetColors();
  41.  
  42.             //Make sure the control repaints as it is resized
  43.             SetStyle(ControlStyles.ResizeRedraw, true);
  44.         }
  45.  
  46.  
  47.         //*** Properties
  48.  
  49.         //Remove the BackColor property from the properties window
  50.         [Browsable(false)]
  51.         public override Color BackColor {
  52.             get {return base.BackColor;}
  53.             set {}
  54.         }
  55.  
  56.  
  57.         //DrawingMode - controls how the control paints
  58.         [
  59.             Category("Appearance"),
  60.             Description("Controls how the control paints"),
  61.             DefaultValue(DrawingMode.Happy),
  62.             Bindable(true),
  63.         ]
  64.         public DrawingMode DrawingMode {
  65.             get { return drawingMode;}
  66.             set {
  67.                 drawingMode=value;
  68.  
  69.                 //Raise property changed event for DrawingMode
  70.                 OnDrawingModeChanged(EventArgs.Empty);
  71.             }
  72.         }
  73.  
  74.  
  75.         //Remove the ForeColor property from the properties window
  76.         [Browsable(false)]
  77.         public override Color ForeColor  {
  78.             get {return base.ForeColor;}
  79.             set {}
  80.         }
  81.  
  82.  
  83.         //*** Events
  84.  
  85.         //Handle the paint event
  86.         protected override void OnPaint(PaintEventArgs e) {
  87.  
  88.             e.Graphics.FillRectangle(new SolidBrush(BackColor), ClientRectangle);
  89.  
  90.             Size textSize = e.Graphics.MeasureString(Text, Font).ToSize();
  91.  
  92.             float xPos = (ClientRectangle.Width/2) - (textSize.Width/2);
  93.             float yPos = (ClientRectangle.Height/2) - (textSize.Height/2);
  94.  
  95.             e.Graphics.DrawString(Text,
  96.                                   Font,
  97.                                   new SolidBrush(ForeColor),
  98.                                   xPos, yPos);
  99.  
  100.         }
  101.  
  102.         protected override void OnTextChanged(EventArgs e) {
  103.             base.OnTextChanged(e);
  104.             Invalidate();
  105.         }
  106.  
  107.         //DrawingModeChanged Event
  108.         [Description("Raised when the DrawingMode changes")]
  109.         public event EventHandler DrawingModeChanged {
  110.             add {
  111.                 onDrawingModeChanged += value;
  112.             }
  113.             remove {
  114.                 onDrawingModeChanged -= value;
  115.             }
  116.         }
  117.  
  118.         protected virtual void OnDrawingModeChanged(EventArgs e) {
  119.  
  120.             //Set BackColor and ForeColor based on DrawingMode
  121.             SetColors();
  122.  
  123.             Invalidate();
  124.  
  125.             if (onDrawingModeChanged != null) onDrawingModeChanged.Invoke(this, e);
  126.         }
  127.  
  128.  
  129.         //Set the ForeColor and BackColor based on the value of DrawingMode
  130.         private void SetColors() {
  131.  
  132.             switch (drawingMode) {
  133.  
  134.                case DrawingMode.Happy:
  135.                    base.BackColor = Color.Yellow ;
  136.                    base.ForeColor = Color.Green ;
  137.                    break ;
  138.  
  139.                case DrawingMode.Sad:
  140.                    base.BackColor = Color.LightSlateGray ;
  141.                    base.ForeColor = Color.White ;
  142.                    break ;
  143.  
  144.               case DrawingMode.Angry:
  145.                   base.BackColor = Color.Red ;
  146.                   base.ForeColor = Color.Teal ;
  147.                   break ;
  148.  
  149.                default:
  150.                    base.BackColor = Color.Black ;
  151.                    base.ForeColor = Color.White ;
  152.                     break;
  153.            }
  154.  
  155.         }
  156.  
  157.  
  158.     }
  159. }
  160.